home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / biz / swood / FWTabTools.lha / FWTabTools / FWCalcMulti1.rexx < prev    next >
OS/2 REXX Batch file  |  1998-01-04  |  4KB  |  203 lines

  1. /* $VER: 0.12 , (04.01.1998), © by Thorsten Willert
  2.    
  3.    Macro um Tabellenspalten zu multiplizieren
  4. ------------------------------------------------*/
  5.  
  6. ADDRESS = 'FinaW'
  7. OPTIONS CACHE RESULTS
  8.  
  9. STATUS PORTNAME
  10. FW = RESULT
  11. ADDRESS = FW
  12.  
  13. SIGNAL ON BREAK_C
  14. SIGNAL ON HALT
  15. SIGNAL ON SYNTAX
  16.  
  17. /*-----------------------------------------------*/
  18.  
  19. RT.Version   = "Version 0.12"
  20. RT.Title     = "FWCalcMulti1"
  21. RT.Para1     = "rt_pubscrname = FinalWriterPubScreen rt_topoffset = 50 rt_reqpos = reqpos_topleftscr"
  22. RT.Copyright = "© 1998, by Thorsten Willert"
  23.  
  24. R = '0A'X
  25.  
  26. Formel = "1 * 2 = 3"
  27.  
  28. /*-----------------------------------------------*/
  29.  
  30. IF ~show('L',"rexxreqtools.library") THEN DO
  31.    IF ~addlib('rexxreqtools.library',0,-30,0) THEN DO
  32.       'ShowMessage 1 1 "Fehler ..." "Benötige RexxReqTools.library!" "" "Abbruch !!" "" ""'
  33.       EXIT 20
  34.    END
  35. END
  36.  
  37. DO FOREVER
  38.  
  39.     RESULT = Info("_Berechnen|_Ende" )
  40.     IF RESULT = 0 THEN LEAVE
  41.     ELSE IF RESULT = 100 THEN ITERATE
  42.  
  43.     IF  GetCursor() = 0 THEN ITERATE
  44.     
  45.     CALL Multi
  46.     
  47.     TableSetActiveCell StartZeile StartSpalte
  48.  
  49. END
  50.  
  51. /*-----------------------------------------------*/
  52.  
  53. Ende:
  54. EXIT
  55.  
  56. /*-----------------------------------------------*/
  57.  
  58. GetCursor:
  59.  
  60. RESULT = ""
  61.  
  62. ADDRESS(FW)
  63. TableGetActiveCell
  64. PARSE VAR RESULT Zeile Spalte
  65.  
  66. StartZeile = Zeile
  67. StartSpalte = Spalte
  68.  
  69. IF Zeile = "" | Spalte = "" THEN /* Geht nicht über GetObjektType */
  70.     DO
  71.         CALL KeineTabelle
  72.         RETURN 0
  73.     END
  74.  
  75. TableGetColumns
  76. PARSE VAR RESULT Muell Spalten
  77.  
  78. TableGetRows
  79. PARSE VAR RESULT Muell Zeilen
  80.  
  81.  
  82. RETURN 1
  83.  
  84. /*-----------------------------------------------*/
  85.  
  86. Multi:
  87.      
  88.      DO FOREVER
  89.           TableSetActiveCell Zeile Spalte1
  90.           Op1 = GetInhalt()
  91.           
  92.           TableSetActiveCell Zeile Spalte2
  93.           Op2 = GetInhalt()
  94.           
  95.           TableSetActiveCell Zeile ESpalte
  96.           
  97.           INTERPRET( "Ergebniss =" Op1 * Op2 )
  98.           
  99.           SelectAll
  100.           Justify Right
  101.           Style Bold
  102.           Type Ergebniss
  103.           
  104.           Zeile = Zeile + 1
  105.           IF Zeile = Zeilen+1 THEN LEAVE
  106.      END  
  107.     
  108. RETURN
  109.  
  110. /*-----------------------------------------------*/
  111.  
  112. GetInhalt: PROCEDURE
  113.  
  114.   SelectAll
  115.   Extract
  116.   Op = STRIP(TRANSLATE( RESULT ,".",","),"T",'0A'X)
  117.   IF DATATYPE( Op, "NUMERIC" ) = 1 THEN
  118.     Op1 = Op
  119.   ELSE
  120.     Op1 = 0
  121.   
  122. RETURN Op1
  123.  
  124. /*-----------------------------------------------*/
  125.  
  126. KeineTabelle:
  127.  
  128. rtezrequest("Zuerst eine Tabelle auswählen"||R||,
  129.             "und Cursor positioniern!","Weiter",RT.Title)
  130.  
  131. RETURN
  132.  
  133. /*-----------------------------------------------*/
  134.  
  135. Info:
  136. PARSE ARG Taste1
  137.  
  138. DO FOREVER
  139.     res = rtgetstring(Formel,RT.Version||","||R||RT.Copyright||R||R||,
  140.                       "Multipliziert Spalten ab Cursor-Zeile:"||R||,
  141.                       "Spalte * Spalte = Spalte",RT.Title,Taste1,RT.Para1)
  142.     IF rtresult = 1 THEN LEAVE
  143.     ELSE RETURN rtresult
  144. END
  145.  
  146. IF MakeFormel( res ) = 0 THEN RETURN 100
  147.             
  148. RETURN res
  149.  
  150. /*-----------------------------------------------*/
  151.  
  152. MakeFormel:
  153. PARSE ARG Formel
  154.  
  155.     Formel2 = TRANSLATE(Formel," ", "*=()+-:;")
  156.     IF VERIFY( Formel2 , " 1234567890" ) ~= 0 THEN
  157.         DO
  158.             CALL Message( "Ungültiges Zeichen in Formel!"||R||Formel )
  159.             RETURN 0
  160.         END
  161.     ELSE
  162.     PARSE VAR Formel2 Spalte1 Spalte2 ESpalte
  163.     
  164.     IF Spalte1 = "" |  Spalte2 = "" |  ESpalte = "" THEN
  165.         DO
  166.             CALL Message( "Falsche Spaltenangabe!"||R||Formel )
  167.             RETURN 0
  168.         END
  169.     
  170.     IF Spalte1 > Spalten | Spalte2 > Spalten |,
  171.     ESpalte > Spalten THEN
  172.         DO
  173.             CALL Message( "Spalte außerhalb Tabelle!"||R||Formel )
  174.             RETURN 0
  175.         END
  176.     
  177. RETURN 1
  178.  
  179. /*-----------------------------------------------*/
  180.  
  181. Message:
  182. PARSE ARG RT.Text
  183.  
  184. rtezrequest(RT.Text,"_Weiter",RT.Title)
  185.  
  186. RETURN
  187.  
  188. /*-----------------------------------------------*/
  189.  
  190. HALT:
  191. BREAK_C:
  192.  
  193. rtezrequest("Macro wurde abgebrochen ... ","_Weiter",RT.Title)
  194.  
  195. EXIT 10
  196.  
  197. /*-----------------------------------------------*/
  198.  
  199. SYNTAX:
  200.  
  201. rtezrequest("Fehler!","_Weiter",RT.Title)
  202.  
  203. EXIT 10